home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
gnu
/
libg_261.zip
/
libg_261
/
libg++
/
src
/
init_main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-08-14
|
2KB
|
57 lines
/* init_main.c: Static Constructor Initialization for Dynamically
* Linked Libraries
* Author: James Kempf
* Created On: Fri Dec 21 08:31:07 1990
* Last Modified By: James Kempf
* Last Modified On: Wed Apr 24 10:41:25 1991
* Update Count: 46
*/
#include "dldefs.h"
/* This global is used to communicate the ctor/dtor list address to
* dynamically linked libraries. Some static linkers may have trouble
* with initialized data in PIC code. gcc can generate initialization
* functions for any user data, but the ctor/dtor lists are generated
* by the linker. So we use this ruse to make sure the address gets
* to the initialization function. This code should *always* run single
* threaded.
*/
int * __function_list_addr = 0;
extern int __CTOR_LIST__;
extern int __DTOR_LIST__;
int __main();
void INIT_FUN();
void FINI_FUN();
void _initialize_dynamic_libs();
void _finalize_dynamic_libs();
void exit(/*int*/);
void _exit(/*int*/);
void _cleanup();
/*************************************************************************
* Main initialization and finalization
************************************************************************/
/* __main-Initialize dynamically linked libraries, then main. */
int __main()
{
_initialize_dynamic_libs();
__function_list_addr = &__CTOR_LIST__;
INIT_FUN();
return(0);
}
void exit( int status)
{
__function_list_addr = &__DTOR_LIST__;
FINI_FUN();
_finalize_dynamic_libs();
_cleanup();
_exit(status);
}